<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
    <script>
        var c = console.log.bind(document)
        // 换位原理: 
        // 利用空变量来换位
        // var a = 2
        // var b = 6
        // var s = null
        // s = a  // 把 a 给 s 
        // a = b  // 把 b 给 a
        // b = s  // 把 a 给 s 的给到 b
        // c(a,b,s) // 6,2,2

        // // 数值差换位
        // var a = 2
        // var b = 6
        // var s = b-a
        
        // a = s + a
        // b = b - s
        // c(a,b,s) // 6,2,4

        // 冒泡排序:
        // 原理:相邻的两位数互相比较
        // var arr1 = [3,25,108,93,28,800,9]
        // function fn(arr) {
        //     for(var i=0;i<arr.length;i++) {
        //         // i: 0 1 2 3 4
        //         // n的循环每次执行完毕 n都会回到0
        //         // arr.length-1-i == n<6-0  n<6-1
        //         for(var n=0;n<arr.length-1-i;n++) {
        //             if(arr[n] < arr[n+1]) {
        //                 // 空变量换位法
        //                 c(arr)
        //                 c(n)
        //                 c(n+1)
        //                 var s = null
        //                 s = arr[n]
        //                 arr[n]=arr[n+1] 
        //                 arr[n+1] = s
        //             }
        //         }
        //     }
        // }
        // fn(arr1)


        // 快速排列
        var  arr = [3,25,108,93,28,8,9]
        function fn(arr) {
            if(arr.length<1) {
                return arr
            }
            var middle = arr.splice(parseInt(arr.length/2),1)[0]
            var maxarr = []
            var minarr = []
            for(var i=0;i<arr.length;i++) {
                if(arr[i]<middle) {
                    minarr.push(arr[i])
                }else {
                    maxarr.push(arr[i])
                }   
            }
            return fn(maxarr).concat(middle,minarr)
        }
        c(fn(arr))
    </script>
</body>
</html>